/*
 * @Date: 2024-08-23 09:57:23
 * @Author: LiSong
 * @LastEditors: LiSong
 * @LastEditTime: 2024-09-06 09:07:18
 * @Description: 基础的字段操作混入
 */

// 定义方法前缀的标识
export const FuncPrefix = 'func:'
export default {
  methods: {
    /**
     * 解析查询条件数据
     * 
     * @param {String} condition 查询条件
     * @param {Boolean} openEncrypt 是否开启加密
     * @returns {String} 解析后的数据
     */
    parseQueryCondition (condition, openEncrypt=false) {
      if (!condition) return ''
      try {
        let result = ''
        // 判断是否为方法
        if ((typeof condition === 'string' || condition instanceof String) && condition.startsWith(FuncPrefix)) {
          const executeFunc = new Function(condition.replace(FuncPrefix, ''))
          result = executeFunc.call(this)
        } else {
          result = condition
        }
        result = openEncrypt ? window.btoa(result) : result
        return result
      } catch(error) {
        console.error('解析查询条件数据出错！', error)
      }
    },
    /**
     * 转义表格请求后触发的自定义处理方法
     * 
     * @param {String} content 解析内容
     * @param {Array|Object} tableData 表格请求数据
     * @param {Boolean} openEncrypt 开启加密
     * @returns 
     */
    parseTableRespHandle (content, tableData, openEncrypt=false) {
      if (!content) return ''
      try {
        let result = ''
        // 判断是否为方法
        if ((typeof content === 'string' || content instanceof String) && content.startsWith(FuncPrefix)) {
          const executeFunc = new Function('tableData', content.replace(FuncPrefix, ''))
          result = executeFunc.call(this, tableData)
        } else {
          result = content
        }
        result = openEncrypt ? window.btoa(result) : result
        return result
      } catch(error) {
        console.error('解析数据出错！', error)
      }
    }
  }
}